教務課では、学生プロフィール、コース詳細、履修情報が別々のテーブルに分かれています。 正しい学生名を正しいコースの隣に表示するレポートを作成しましょう。
3つのリクエスト
- Emma Liの有効なコースを検索する。
- 学生名とコース名を含む有効な履修情報を一覧表示する。
- DSAI学生のPY101有効受講者名簿を提出する。
PostgreSQLの準備
- pgAdminで、提供された
lab6_7_setup.sqlをTAフォルダDSAI2202/lab6_7/から開き、ファイル全体を一度実行します。 - 最終的な件数を確認します: 学生22名、コース8件、履修37件レポートを作成しましょう。
- 右側の接続設定を実行します。新しいデータベース接続を開くたびに繰り返してください。
- 結合する前に3つのテーブルを確認します。
Lab 7でも同じセットアップを使用します。これには assignments、 submissions、および lms_rosterが含まれます。本日は、ここに示す3つのテーブルを使用してください。人物および記録はすべて架空のものです。
✍️ 結合する前にたどってみよう
履修E01を探しましょう。どの学生IDとコースコードが含まれていますか?Dataタブを使用して学生名とコース名を確認してください。
SET search_path TO lab6_7;SET search_path TO lab6_7;
SELECT student_id, student_name, programme
FROM students
ORDER BY student_id;SET search_path TO lab6_7;
SELECT course_code, course_title, credits
FROM courses
ORDER BY course_code;SET search_path TO lab6_7;
SELECT enrolment_id, student_id, course_code,
enrolment_status, score
FROM enrolments
ORDER BY enrolment_id;3つのテーブルの小さなプレビュー
students: 22行。 student_id が主キーです。
| student_id | student_name | programme |
|---|---|---|
| S101 | Alice Wong | DSAI |
| S102 | Ben Lau | CS |
| S105 | Emma Li | CS |
courses: 8行。 course_code が主キーです。
| course_code | course_title | credits |
|---|---|---|
| SQL101 | SQLの基礎 | 3 |
| PY101 | Pythonプログラミング | 3 |
| WEB101 | Webデータベース | 3 |
enrolments: 37行。有効30件、取消7件を含みます。 enrolment_id が主キーです。
| enrolment_id | student_id | course_code | enrolment_status |
|---|---|---|---|
| E01 | S101 | SQL101 | active |
| E04 | S104 | SQL101 | withdrawn |
| E06 | S105 | PY101 | active |
学生リンク
enrolments.student_id → students.student_id外部キーは1人の学生を参照します。
コースリンク
enrolments.course_code → courses.course_code外部キーは1つのコースを参照します。
E01をたどる
S101 + SQL101Alice Wong + SQLの基礎。
繰り返されるIDがレコードをつなぎます。名前とタイトルはそれぞれのテーブルに残ります。1人の学生が複数の履修に登場することがあります。